/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.bitoon.basketdudes.ws.es;

import com.bitoon.basketdudes.jpa.Equipo;
import com.bitoon.basketdudes.ws.Configuracion;
import com.bitoon.basketdudes.ws.ExcepcionGeneral;
import com.bitoon.basketdudes.ws.Tienda;
import java.io.PrintWriter;
import java.util.List;
import java.util.Properties;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author paco
 */
public class LoginAction extends com.bitoon.basketdudes.ws.LoginAction {

    @Override
    public Equipo wsCrearEquipo(HttpServletRequest request, HttpServletResponse response) {

        Equipo equipo      = super.wsCrearEquipo( request, response);
        int    premio_ropa_primer_equipo = 0;  // Ninguno
        int    origen_primer_equipo      = -1; // Todos
        EntityManager em = null;

/* 07/08/2012 Antigua forma de leer el fichero de configuración
        ClassLoader loader = LoginAction.class.getClassLoader();
        if (loader==null) {
            loader = ClassLoader.getSystemClassLoader();
        }

        String propFile = "config.properties";
        java.net.URL url = loader.getResource(propFile);
        Properties configuracion= new Properties();
        try {
            configuracion.load(url.openStream());
            premio_ropa_primer_equipo= Integer.parseInt(configuracion.getProperty("premio.ropa_primer_equipo"));
            origen_primer_equipo     = Integer.parseInt(configuracion.getProperty("premio.origen_primer_equipo"));
            log.debug("Entrega de premio primer equipo: "+premio_ropa_primer_equipo+" origen "+origen_primer_equipo);
        } catch (Exception e) {
            log.error("Could not load configuration file: ",e);
        }
*/
        // 07/08/2012 Nueva forma de leer el fichero de configuración
        Configuracion conf = Configuracion.getInstance();
        premio_ropa_primer_equipo = conf.BuscarValorConfiguracionInteger("premio.ropa_primer_equipo");
        origen_primer_equipo      = conf.BuscarValorConfiguracionInteger("premio.origen_primer_equipo");

        try {

            if ( premio_ropa_primer_equipo>0 ) {
                em = emfBasket.createEntityManager(); // check 08.08.2012

                HttpSession miSesion = request.getSession(true);
                String idSesion = miSesion.getId();
                int idUsuario = comprobarSesion(miSesion.getId(), em);

                Query q = em.createNamedQuery("Equipo.findByIdUsuario");
                q.setParameter("idUsuario", idUsuario);
                List<Equipo> l = (List<Equipo>)q.getResultList();

                if (l.size() == 1) {
                    log.debug("PRIMER EQUIPO");
                    Equipo equipo_buscar= l.get(0);

                    if ( equipo_buscar.getUsuario().getOrigenId() == origen_primer_equipo ||
                         origen_primer_equipo == -1   ) {
                        log.debug("ORIGEN PREMIO");

                        Tienda tienda = new Tienda();

                        if ( idSesion != null ) {
                            log.debug(" ENTREGAR ROPA AL CREAR PRIMER EQUIPO" + (int)l.get(0).getId() );
                            tienda.comprar_moneda( idSesion, (int)l.get(0).getId(), (short)2,
                                                premio_ropa_primer_equipo, (short)1, 0, true, 1, -1, -1, -1);
                            try {
                                PrintWriter out = response.getWriter();
                                out.print(";tipo_regalo=2;regalo="+premio_ropa_primer_equipo);
                            } catch (Exception e) {
                                log.error("[wsCrearEquipo]: Error al escribir en response.getWriter()", e);
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            log.error("[ERROR][wsCrearEquipo]: " , e);
            if (em     != null && em.getTransaction().isActive() )
                em.getTransaction().rollback();
        } finally {
            try { if (em != null) em.close(); } catch (Exception e) { }; // revisado 09/08/2012
        }

        return equipo;
    }
}
